<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Setting the heap size | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="important-settings.html" title="Important Elasticsearch configuration">
<link rel="prev" href="discovery-settings.html" title="Important discovery and cluster formation settings">
<link rel="next" href="heap-dump-path.html" title="JVM heap dump path">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="setup.html">Set up Elasticsearch</a></span>
»
<span class="breadcrumb-link"><a href="important-settings.html">Important Elasticsearch configuration</a></span>
»
<span class="breadcrumb-node">Setting the heap size</span>
</div>
<div class="navheader">
<span class="prev">
<a href="discovery-settings.html">« Important discovery and cluster formation settings</a>
</span>
<span class="next">
<a href="heap-dump-path.html">JVM heap dump path »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="heap-size"></a>Setting the heap size<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/setup/important-settings/heap-size.asciidoc">edit</a>
</h2>
</div></div></div>
<p>By default, Elasticsearch tells the JVM to use a heap with a minimum and maximum
size of 1 GB. When moving to production, it is important to configure heap size
to ensure that Elasticsearch has enough heap available.</p>
<p>Elasticsearch will assign the entire heap specified in
<a class="xref" href="jvm-options.html" title="Setting JVM options">jvm.options</a> via the <code class="literal">Xms</code> (minimum heap size) and <code class="literal">Xmx</code> (maximum
heap size) settings. You should set these two settings to be equal to each
other.</p>
<p>The value for these settings depends on the amount of RAM available on your
server:</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
Set <code class="literal">Xmx</code> and <code class="literal">Xms</code> to no more than 50% of your physical RAM. Elasticsearch requires
memory for purposes other than the JVM heap and it is important to leave
space for this. For instance, Elasticsearch uses off-heap buffers for efficient
network communication, relies on the operating system’s filesystem cache for
efficient access to files, and the JVM itself requires some memory too. It is
normal to observe the Elasticsearch process using more memory than the limit
configured with the <code class="literal">Xmx</code> setting.
</li>
<li class="listitem">
<p>Set <code class="literal">Xmx</code> and <code class="literal">Xms</code> to no more than the threshold that the JVM uses for
compressed object pointers (compressed oops); the exact threshold varies but
is near 32 GB. You can verify that you are under the threshold by looking for a
line in the logs like the following:</p>
<pre class="literallayout">heap size [1.9gb], compressed ordinary object pointers [true]</pre>

</li>
<li class="listitem">
<p>Ideally set <code class="literal">Xmx</code> and <code class="literal">Xms</code> to no more than the threshold for zero-based
compressed oops; the exact threshold varies but 26 GB is safe on most
systems, but can be as large as 30 GB on some systems. You can verify that
you are under this threshold by starting Elasticsearch with the JVM options
<code class="literal">-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode</code> and looking for
a line like the following:</p>
<pre class="literallayout">heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops</pre>

<p>showing that zero-based compressed oops are enabled. If zero-based compressed
oops are not enabled then you will see a line like the following instead:</p>
<pre class="literallayout">heap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000</pre>

</li>
</ul>
</div>
<p>The more heap available to Elasticsearch, the more memory it can use for its internal
caches, but the less memory it leaves available for the operating system to use
for the filesystem cache. Also, larger heaps can cause longer garbage
collection pauses.</p>
<p>Here is an example of how to set the heap size via a <code class="literal">jvm.options.d/</code> file:</p>
<div class="pre_wrapper lang-txt">
<pre class="programlisting prettyprint lang-txt">-Xms2g <a id="CO26-1"></a><i class="conum" data-value="1"></i>
-Xmx2g <a id="CO26-2"></a><i class="conum" data-value="2"></i></pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO26-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>Set the minimum heap size to 2g.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO26-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>Set the maximum heap size to 2g.</p>
</td>
</tr>
</table>
</div>
<p>It is also possible to set the heap size via an environment variable. This can
be done by setting these values via <code class="literal">ES_JAVA_OPTS</code>:</p>
<div class="pre_wrapper lang-sh">
<pre class="programlisting prettyprint lang-sh">ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch <a id="CO27-1"></a><i class="conum" data-value="1"></i>
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch <a id="CO27-2"></a><i class="conum" data-value="2"></i></pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO27-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>Set the minimum and maximum heap size to 2 GB.</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO27-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>Set the minimum and maximum heap size to 4000 MB.</p>
</td>
</tr>
</table>
</div>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>Configuring the heap for the <a class="xref" href="zip-windows.html#windows-service" title="Installing Elasticsearch as a Service on Windows">Windows service</a> is
different than the above. The values initially populated for the Windows
service can be configured as above but are different after the service has been
installed. Consult the <a class="xref" href="zip-windows.html#windows-service" title="Installing Elasticsearch as a Service on Windows">Windows service documentation</a> for
additional details.</p>
</div>
</div>
</div>
<div class="navfooter">
<span class="prev">
<a href="discovery-settings.html">« Important discovery and cluster formation settings</a>
</span>
<span class="next">
<a href="heap-dump-path.html">JVM heap dump path »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
